home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / mops / announce.txt next >
Text File  |  1993-07-23  |  6KB  |  108 lines

  1. This message will be of interest to: (i) People who are interested in
  2. metaobject protocols, particularly metaobject protocols for Lisp-based
  3. object-oriented languages; and (ii) people who are interested in Lisp-
  4. based object-oriented languages like CLOS and Dylan.  In this message,
  5. we announce the public availability of the Scheme implementation of a
  6. `kernelized' CLOS, with a metaobject protocol.  (If you are interested
  7. only in OO languages, and not metaobject protocols, you can skip the
  8. third, fourth and fifth paragraphs of this message.)
  9.  
  10. One stumbling block for people interested in playing with the metaobject
  11. protocol (MOP) ideas has been the relative complexity of working in
  12. Common Lisp.  This has been a particular obstacle for undergraduates and
  13. others who normally work in Scheme (or a very reduced Common Lisp).  To
  14. try and address this, we have designed and implemented a Scheme
  15. embedding of a core subset of CLOS, with a corresponding core MOP.
  16.  
  17. Since our primary goal is pedagogical in nature, we have been able to
  18. produce an extremely lean language, MOP and implementation.  The
  19. implementation is even simpler than the simple CLOS found in `The Art of
  20. the Metaobject Protocol,' weighing in at around 850 lines of code,
  21. including (some) comments and documentation.
  22.  
  23. By making the new language and MOP be the core of CLOS and the CLOS MOP,
  24. rather than some completely new language, our goal was to make possible
  25. for people to work with existing written materials -- primarily `The Art
  26. of the Metaobject Protocol' (AMOP) -- when playing with this system.
  27. (It should also be possible for people working with Tiny CLOS to get
  28. value from reading papers about others MOPs, such as ABLC/R, 3KRS and
  29. others.)  A side benefit of this approach is that Tiny CLOS is close to
  30. a core of Dylan, so people interested in that language may find value in
  31. playing with Tiny CLOS as well.)
  32.  
  33. The MOP in Tiny CLOS is very simple -- 8 introspective procedures and 9
  34. intercessory generics -- but it retains much of the power of both of the
  35. MOPs found in AMOP.  Even though the Tiny CLOS implementation itself
  36. isn't optimized, this MOP is amenable to optimization, using techniques
  37. like those mentioned in AMOP.  In fact, the slot access protocol used in
  38. this MOP is such that it should be possible to get better performance
  39. than is possible with the CLOS MOP.
  40.  
  41. While it isn't our primary goal, Tiny CLOS can also be used by those who
  42. are simply intereted in CLOS/Dylan style OO languages.  That is, you can
  43. play with the base language without even thinking about the MOP.  A
  44. great deal has already been said and written about how to learn, think
  45. about and teach OOP and CLOS-like languages, so we won't say any more
  46. about that.  But, it is important to point out a significant difference
  47. between Tiny CLOS and CLOS/Dylan.  In Tiny CLOS, slot names are not
  48. required to be symbols, they can be any Scheme datum (object).  (They
  49. are compared using eq?.)  This means that one can use the lexical
  50. scoping mechanisms of Scheme to achieve a greater degree of
  51. encapsulation than is possible in CLOS.  For more on this, see the
  52. second and third examples in the examples file.
  53.  
  54. Accompanying Tiny CLOS is a file of examples, that show how the base
  55. language works, and how to use the MOP to do several common extensions.
  56. Other things people might want to write are: before and after methods,
  57. slot filling initargs, beta-like languages, singleton methods etc.
  58.  
  59. To make distribution simple, Tiny CLOS is available by anonymous ftp
  60. from parcftp.xerox.com:/pub/mops.  There are five files of interest:
  61.  
  62.   
  63.  tiny-annouce.text  This message.
  64.  
  65.  support.scm        Just a bunch of useful stuff.
  66.                     (All implementation specific mods (are supposed
  67.                     to) go in here.)
  68.  tiny-clos.scm      The main program.
  69.  tiny-examples.scm  A few little examples of using this language
  70.                     and this MOP.
  71.  tiny-rpp.text      The reflective processor program for this
  72.                     MOP.  This file was generated, by hand, from
  73.                     tiny-clos.scm by removing all the code that
  74.                     deals with bootstrapping or grounding out
  75.                     the tower.  That is, this is the code/protocol
  76.                     that you should `think of' as running at the
  77.                     next level, when ignoring issues of circularity.
  78.  
  79.  
  80. MIT Scheme 11.74 is the only Scheme we have access to, so that is the
  81. only Scheme in which we have run this stuff.  But, it should run with
  82. only minor mods in other Schemes as well.  (Please send us those mods
  83. so they can be included in the sources!)
  84.  
  85.  
  86. This language, this MOP, and this implementation should not be treated
  87. as any sort of finished product.  This whole thing was cranked out
  88. relatively quickly, in response to an immediate need for simplified
  89. Scheme embeddings of this stuff.  We are very interested in any
  90. suggestions or improvements you might have or make.  So, please send
  91. them in!
  92.  
  93. (It is also worth knowing that this is the first Scheme program I have
  94. written in 10 years, so I'm willing to believe I have a lot to learn
  95. about good Scheme style.  Rather than just snickering, please let me
  96. know about stupid things this code does in that regard.)
  97.  
  98. One other note.  You will notice that these files have a copyright
  99. notice on them, as is the fashion these days.  It isn't copyleft, it is
  100. somewhat more liberal than that.  If you have any questions about it,
  101. send us mail.
  102.  
  103. Finally, please let us know if you decide to play with this stuff, and
  104. if you want to be on the mops@parc.xerox.com mailing list.  (Note,
  105. please don't use this mailing list for adminstrative stuff.  It is for
  106. technical questions and discussions.  For administrative stuff, send
  107. mail to Gregor@parc.xerox.com.)
  108.